home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Jotto ][ 1.2 / source / Shell ƒ / window layer.h < prev   
Encoding:
C/C++ Source or Header  |  1994-10-30  |  5.7 KB  |  117 lines  |  [TEXT/R*ch]

  1. #if 0
  2.  
  3. Usage notes:
  4. - MyNewWindow or MyNewCWindow with all the standard parameters to create a
  5.   new window in the document layer.
  6. - MyNewFloatWindow or MyNewCFloatWindow with all the standard parameters to
  7.   create a new window in the floating layer.
  8. - MySelectWindow(theWindowPtr) to select a window in any layer
  9. - MyDisposeWindow(theWindowPtr) to dispose of a window in any layer
  10.  
  11. - Call InitTheWindowLayer(void) once at program startup before creating any
  12.   windows in any layer.
  13. - New windows are automatically visible and frontmost in their layer.  Storage
  14.   must be allocated (sizeof(ExtendedWindowRec)) and passed to any window creation
  15.   routine.
  16. - You should only dispose of the frontmost window in a layer.
  17.  
  18. #endif
  19.  
  20.  
  21. #ifndef __WINDOW_LAYER_H__
  22. #define __WINDOW_LAYER_H__
  23.  
  24. typedef struct
  25. {
  26.     WindowRecord    docWindow;                /* window record */
  27.     unsigned long    magic;                    /* magic number to see if window is ours */
  28.     short            layer;                    /* layer number */
  29.     WindowPtr        nextWindow;                /* next window in layer (further from front) */
  30.     WindowPtr        previousWindow;            /* previous window in layer (closer to front) */
  31.     short            windowIndex;            /* index of window in program's window list */
  32.     short            windowWidth;            /* width of window content, in pixels */
  33.     short            windowHeight;            /* height of window content, in pixels */
  34.     short            windowType;                /* type of window */
  35.     short            windowDepth;            /* current pixel depth of window */
  36.     short            maxDepth;                /* maximum pixel depth of window */
  37.     Boolean            hasCloseBox;            /* window has a close box */
  38.     Boolean            autoCenter;                /* auto center window in main screen when opened */
  39.     Boolean            isFloat;                /* is floating window? */
  40.     Boolean            modified;
  41.     Point            initialTopLeft;            /* initial window bounds when opened */
  42.     Rect            windowBounds;            /* on screen rectangle of window content */
  43.     ControlHandle    vScroll;                /* window's vertical scroll bar */
  44.     ControlHandle    hScroll;                /* window's horizontal scroll bar */
  45.     TEHandle        hTE;                    /* window's TextEdit handle */
  46.     Str63            title;                    /* window title */
  47.     FSSpec            fs;
  48. } ExtendedWindowRec, *ExtendedWindowPtr;
  49.  
  50. #define GetWindowIndex(w)                (((ExtendedWindowPtr)w)->windowIndex)
  51. #define GetWindowWidth(w)                (((ExtendedWindowPtr)w)->windowWidth)
  52. #define GetWindowHeight(w)                (((ExtendedWindowPtr)w)->windowHeight)
  53. #define GetWindowType(w)                (((ExtendedWindowPtr)w)->windowType)
  54. #define GetWindowDepth(w)                (((ExtendedWindowPtr)w)->windowDepth)
  55. #define GetWindowMaxDepth(w)            (((ExtendedWindowPtr)w)->maxDepth)
  56. #define WindowHasCloseBoxQQ(w)            (((ExtendedWindowPtr)w)->hasCloseBox)
  57. #define WindowAutoCenterQQ(w)            (((ExtendedWindowPtr)w)->autoCenter)
  58. #define WindowIsFloatQQ(w)                (((ExtendedWindowPtr)w)->isFloat)
  59. #define WindowIsModifiedQQ(w)            (((ExtendedWindowPtr)w)->modified)
  60. #define GetWindowTopLeft(w)                (((ExtendedWindowPtr)w)->initialTopLeft)
  61. #define GetWindowBounds(w)                (((ExtendedWindowPtr)w)->windowBounds)
  62. #define GetWindowVScrollBar(w)            (((ExtendedWindowPtr)w)->vScroll)
  63. #define GetWindowHScrollBar(w)            (((ExtendedWindowPtr)w)->hScroll)
  64. #define GetWindowTE(w)                    (((ExtendedWindowPtr)w)->hTE)
  65. #define GetWindowTitle(w)                (((ExtendedWindowPtr)w)->title)
  66. #define GetWindowFS(w)                    (((ExtendedWindowPtr)w)->fs)
  67.  
  68. #define SetWindowIndex(w,x)                { ((ExtendedWindowPtr)w)->windowIndex=x; }
  69. #define SetWindowWidth(w,x)                { ((ExtendedWindowPtr)w)->windowWidth=x; }
  70. #define SetWindowHeight(w,x)            { ((ExtendedWindowPtr)w)->windowHeight=x; }
  71. #define SetWindowType(w,x)                { ((ExtendedWindowPtr)w)->windowType=x; }
  72. #define SetWindowDepth(w,x)                { ((ExtendedWindowPtr)w)->windowDepth=x; }
  73. #define SetWindowMaxDepth(w,x)            { ((ExtendedWindowPtr)w)->maxDepth=x; }
  74. #define SetWindowHasCloseBox(w,x)        { ((ExtendedWindowPtr)w)->hasCloseBox=x; }
  75. #define SetWindowAutoCenter(w,x)        { ((ExtendedWindowPtr)w)->autoCenter=x; }
  76. #define SetWindowIsFloat(w,x)            { ((ExtendedWindowPtr)w)->isFloat=x; }
  77. #define SetWindowIsModified(w,x)        { ((ExtendedWindowPtr)w)->modified=x; }
  78. #define SetWindowTopLeft(w,x)            { ((ExtendedWindowPtr)w)->initialTopLeft=x; }
  79. #define SetWindowBounds(w,x)            { ((ExtendedWindowPtr)w)->windowBounds=x; }
  80. #define SetWindowVScrollBar(w,x)        { ((ExtendedWindowPtr)w)->vScroll=x; }
  81. #define SetWindowHScrollBar(w,x)        { ((ExtendedWindowPtr)w)->hScroll=x; }
  82. #define SetWindowTE(w,x)                { ((ExtendedWindowPtr)w)->hTE=x; }
  83. #define SetWindowTitle(w,x)                { BlockMove(x, (((ExtendedWindowPtr)w)->title), x[0]+1); }
  84. #define SetWindowFS(w,x)                { ((ExtendedWindowPtr)w)->fs=x; }
  85.  
  86. #define IndWindowExistsQQ(x)        (GetIndWindowPtr(x)!=0L)
  87. #define WindowExistsQQ(w)            (w!=0L)
  88. #define FrontDocumentWindow()        GetFrontDocumentWindow()
  89.  
  90. extern    Boolean            gIgnoreNextActivateEvent;
  91.  
  92. /* necessary routines */
  93. void InitTheWindowLayer(void);
  94. void ShutDownTheWindowLayer(void);
  95. WindowPtr MyNewWindow(void *wStorage, const Rect *boundsRect, ConstStr255Param title,
  96.     Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon);
  97. WindowPtr MyNewCWindow(void *wStorage, const Rect *boundsRect, ConstStr255Param title,
  98.     Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon);
  99. WindowPtr MyNewFloatWindow(void *wStorage, const Rect *boundsRect, ConstStr255Param title,
  100.     Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon);
  101. WindowPtr MyNewFloatCWindow(void *wStorage, const Rect *boundsRect, ConstStr255Param title,
  102.     Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon);
  103. void MyDisposeWindow(WindowPtr window);
  104. Boolean MySelectWindow(WindowPtr window);
  105.  
  106. /* useful abstract routines for working with windows */
  107. Boolean WindowHasLayer(WindowPtr window);
  108. Boolean WindowIsFloat(WindowPtr window);
  109. WindowPtr GetFrontDocumentWindow(void);
  110. WindowPtr GetIndWindowPtr(short index);
  111.  
  112. /* useful patches */
  113. void InstallHilitePatch(void);
  114. void RemoveHilitePatch(void);
  115.  
  116. #endif
  117.